package com.zzy.beanutils;

import java.lang.reflect.InvocationTargetException;
import java.util.Date;

import org.apache.commons.beanutils.PropertyUtils;
import org.junit.Test;

import com.zzy.beanutils.extend.BeanUtilsExtends;

public class CopyBeanTest {

	
	
	@Test
	public  void copyTest() throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
		Book book=new Book();
		book.setName("123");
		book.setPrice("1");
		book.setCeratetime(new Date());
		
	    
	
	    //BeanUtilsExtends
	    MyBook  mb2=new MyBook();
	    BeanUtilsExtends.copyProperties(mb2,book);
	    System.out.println(mb2.getName());    //跨类
	    System.out.println(mb2.getPrice());    //跨类
	    
	    System.out.println("----------------------------------------");    //跨类
	    
	    
	    //PropertyUtils
	    MyBook  mb=new MyBook();
	    PropertyUtils.copyProperties(mb,book);  //给mb 复制 book的值
	    System.out.println(mb.getName());    //跨类
	    System.out.println(mb.getPrice());    //跨类
	    
	 
	    
	    
	    
	    
//	    BeanUtils.copyProperties(distObj, srcObj);       // 支持属性类型自动转换的功能        不支持util.date  需要扩展
//	    PropertyUtils.copyProperties(distObj, srcObj);  //不支持属性类型自动转换的功能
//	    BeanUtils和PropertyUtils这两个类功能基本相同，唯一的区别是：BeanUtils在对Bean赋值时会进行类型转化，而PropertyUtils不会对类型进行转化，如果类型不同则会抛出异常！
	    
	    
	}
	

}
